
import {forEach} from '../util'
import Module from './module'
class ModuleCollection{
    constructor(options){
        // 对数据进行格式化操作
        this.root = null ;
        this.register([],options);
    }
    getNamespace(path){
        let root = this.root 
        return path.reduce((namespaced,key)=>{
            root = root.getChild(key)
            return namespaced +(root.namespaced ? key +'/' :'')
        },'')
    }
    register(path,rootModule){
        const newModule = new Module(rootModule)
        rootModule.newModule=newModule
        if(path.length==0){
            // 说明是根
            this.root = newModule
        }else {
            let parent = path.slice(0,-1).reduce((module,current)=>{
                return module.getChild(current)
            },this.root)
            parent.addChild(path[path.length-1],newModule);
        }


        if(rootModule.modules){
            forEach(rootModule.modules,(moduleVal,moduleNameKey)=>{
                this.register(path.concat(moduleNameKey),moduleVal)
            })
        }
    }
}
export default ModuleCollection;



// this.root = {
//     _raw: 用户定义的模块,
//     state: 当前模块自己的状态,
//     _children: { // 孩子列表
//         a: {
//             _raw: 用户定义的模块,
//             state: 当前模块自己的状态,
//             _children: { // 孩子列表
//                 e: {}
//             }
//         },
//         c: {

//         }
//     }

// }